#include "threadpool.hpp"
#include<unistd.h>

void print(){
    cout<<"打印中..."<<endl;
    sleep(1);
}
void download(){
    cout<<"下载中..."<<endl;
    sleep(1);
}
void getlog(){
    cout<<"获得日志中..."<<endl;
    sleep(1);
}
void browse(){
    cout<<"浏览中..."<<endl;
    sleep(1);
}
using func_t=function<void()>;
vector<func_t>task;
int cnt=0;
int main(){
   //初始化任务：
    task.push_back( print);
    task.push_back( download);
    task.push_back( getlog);
    task.push_back(browse);
  
     //非单例模式测试：
    // Threadpool<func_t>tp;
    // tp.Start();
    //   int t=10;
    // while(t--){
    //     tp.equeue(task[cnt++]);
    //     cnt%=task.size();
    // }
    // tp.stop();
    // tp.join();
    // //只要有子线程处于cond mutex等阻塞状态；主线程就不会退出；
    // //会一直等着子线程都执行完才退出;其他状态比如子线程还在执行任务的时候；人为退出主线程那么此时；子线程也会挂掉程序段错误终止
    // sleep(5);

   //单例模式测试：
   int i=5;
    while(i--){
        Threadpool<func_t>::getinstance()->equeue(task[cnt++]);
        cnt%=task.size();
    }
    Threadpool<func_t>::getinstance()->stop();
    Threadpool<func_t>::getinstance()->join();
    
}